OpenStack and Juju

List of supported clouds > OpenStack

This document describes details specific to using your existing OpenStack cloud with Juju.

See more: OpenStack

When using the OpenStack cloud with Juju, it is important to keep in mind that it is a (1) machine cloud and (2) not some other cloud.

See more: Cloud differences in Juju

As the differences related to (1) are already documented generically in our Tutorial, How-to guides, and Reference docs, here we record just those that follow from (2).

Supported cloud versions

Any version that supports:
- compute v2 (Nova)
- network v2 (Neutron) (optional)
- volume2 (Cinder) (optional)
- identity v2 or v3 (Keystone)

Notes on juju add-cloud

Type in Juju: openstack.

Name in Juju: User-defined.

If you want to use the novarc file (recommended):
Source the OpenStack RC file (source <path to file>). This will allow Juju to detect values from preset OpenStack environment variables. Run add-cloud in interactive mode and accept the suggested defaults.

Notes on juju add-credential

If you want to use environment variables (recommended):
Source the OpenStack RC file (see above). Run add-credential and accept the suggested defaults.

Authentication types

userpass

Attributes:

  • username: The username to authenticate with. (required)
  • password: The password for the specified username. (required)
  • tenant-name: The OpenStack tenant name. (optional)
  • tenant-id: The Openstack tenant ID (optional)
  • version: The Openstack identity version (optional)
  • domain-name: The OpenStack domain name. (optional)
  • project-domain-name: The OpenStack project domain name. (optional)
  • user-domain-name: The OpenStack user domain name. (optional)

Notes on juju bootstrap

You will need to create an OpenStack machine metadata. If the metadata is available locally, you can pass it to Juju via juju bootstrap ... --metadata-source <path to metadata simplestreams.
> See more: How to manage metadata

If your cloud has multiple private networks: You will need to specify the one that you want the instances to boot from via juju bootstrap ... --model-default network=<network uuid or name>.

If your cloud’s topology requires that its instances are accessed via floating IP addresses: Pass the allocate-public-ip=true (see constraints below) as a bootstrap constraint.

Cloud-specific model configuration keys

external-network

The network label or UUID to create floating IP addresses on when multiple external networks exist.

type string
default value “”
immutable false
mandatory false

use-openstack-gbp

Whether to use Neutrons Group-Based Policy

type bool
default value false
immutable false
mandatory false

policy-target-group

The UUID of Policy Target Group to use for Policy Targets created.

type string
default value “”
immutable false
mandatory false

use-default-secgroup

Whether new machine instances should have the “default” Openstack security group assigned in addition to juju defined security groups.

type bool
default value false
immutable false
mandatory false

network

The network label or UUID to bring machines up on when multiple networks exist.

type string
default value “”
immutable false
mandatory false

Supported constraints

Juju points of variation Notes for the OpenStack cloud
CONSTRAINT
conflicting: [instance-type] vs. [mem, root-disk, cores]
supported?
- allocate-public-ip :white_check_mark:
- arch :white_check_mark:
- container :white_check_mark:
- cores :white_check_mark:
- cpu-power :x:
- image-id :white_check_mark: (Starting with Juju 3.3)
Type: String.
Valid values: An OpenStack image ID.
- instance-role :x:
- instance-type :white_check_mark:
Valid values: Any (cloud admin) user defined OpenStack flavor.
- mem :white_check_mark:
- root-disk :white_check_mark:
- root-disk-source :white_check_mark:
root-disk-source is either local or volume.
- spaces :x:
- tags :x:
- virt-type :white_check_mark:
Valid values: [kvm, lxd].
- zones :white_check_mark:
PLACEMENT DIRECTIVE
<machine> TBA
subnet=... :x:
system-id=... :x:
zone=... :white_check_mark:
MACHINE
RESOURCE (cloud)

Consistent naming, tagging, and the ability to add user-controlled tags to created instances.

:white_check_mark:

Contributors: @acsgn, @gerdner, @hallback, @tmihoc, @wallyworld